﻿using System;
using System.Linq;
using StockholmsStad.Web.UI.UIServiceReference;

namespace StockholmsStad.Web.UI.Class.Utilities
{
    /// <summary>
    /// Innehåller alla varibler som ska lagras i session. Lagrar bara ett objekt med en nyckel 
    /// i session istf många objekt med många nycklar.
    /// </summary>
    public class SessionItem
    {
        /// <summary>
        /// Parinformation, används i registreringen
        /// </summary>
        public Couple Couple { get; set; }

        /// <summary>
        /// Bokningsinformation, används vid bokning
        /// </summary>
        public Booking Booking { get; set; }

         /// <summary>
        /// Mellanlagningsplats för bokade dagar, används vid bokning
        /// </summary>
        public IOrderedEnumerable<DateTime> CachedBookedTimeblocks { get; set; }

        /// <summary>
        /// Mellanlagringsplats för lediga tider i stadshuset, används vid bokning
        /// </summary>
        public IOrderedEnumerable<DateTime> CachedFreeTimeblocksOrdinary { get; set; }

        /// <summary>
        /// Mellanlagringsplats för lediga tider på annan plats, används vid bokning
        /// </summary>
        public IOrderedEnumerable<DateTime> CachedFreeTimeblocksIndividual { get; set; }

        /// <summary>
        /// Ceremoniinformation, används vid registrering
        /// </summary>
        public Ceremony Ceremony { get; set; }

        /// <summary>
        /// Knytpunkt för ett pars hela vigselhantering, sätts då ett par har registrerat sig.
        /// Betyder inte att man är inloggad.
        /// </summary>
        public int? RegistrationTicketId { get; set; }

        /// <summary>
        /// Knytpunkt för ett pars hela vigselhantering, sätts vid inloggning
        /// </summary>
        public User User { get; set; }
    }
}